home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-ietf-wnils-whois-02.txt < prev    next >
Text File  |  1993-10-27  |  24KB  |  536 lines

  1. WNILS Working Group                    Chris Weider
  2. INTERNET-DRAFT                        Merit Network, Inc.
  3. <draft-ietf-wnils-whois-02.txt>                Jim Fullton
  4.                             CNIDR
  5.                             Simon Spero
  6.                             UNC-Chapel Hill
  7.                             October, 1993
  8.  
  9.  
  10.     Architecture of the Whois++ Index Service
  11.  
  12. Status of this memo:
  13.  
  14. The authors describe an architecture for indexing in distributed databases,
  15. and apply this to the WHOIS++ protocol.
  16.  
  17.  
  18.         This document is an Internet Draft.  Internet Drafts are working 
  19.         documents of the Internet Engineering Task Force (IETF), its Areas, 
  20.         and its Working Groups. Note that other groups may also distribute
  21.         working documents as Internet Drafts. 
  22.  
  23.         Internet Drafts are draft documents valid for a maximum of six 
  24.         months. Internet Drafts may be updated, replaced, or obsoleted
  25.         by other documents at any time.  It is not appropriate to use
  26.         Internet Drafts as reference material or to cite them other than
  27.         as a "working draft" or "work in progress."
  28.  
  29.         Please check the I-D abstract listing contained in each Internet 
  30.         Draft directory to learn the current status of this or any 
  31.         other Internet Draft.
  32.  
  33.     This Internet Draft expires April 26, 1994.
  34.  
  35. 1. Purpose:
  36.  
  37. The WHOIS++ directory service [Deutsch, et al, 1992] is intended to provide
  38. a simple, extensible directory service predicated on a template-based
  39. information model and a flexible query language. This document describes
  40. a general architecture designed for indexing distributed databases, and then
  41. applys that architecture to link together many of these WHOIS++ servers
  42. into a distributed, searchable wide area directory service.
  43.  
  44. 2. Scope:
  45.  
  46. This document details a distributed, easily maintained architecture for
  47. providing a unified index to a large number of distributed WHOIS++
  48. servers. This architecture can be used with systems other than WHOIS++ to
  49. provide a distributed directory service which is also searchable.
  50.  
  51. 3. Motivation and Introduction:
  52.  
  53. It seems clear that with the vast amount of directory information potentially
  54. available on the Internet, it is simply not feasible to build a centralized
  55. directory to serve all this information. If we are to distribute the directory 
  56. service, the easiest (although not necessarily the best) way of building the 
  57. directory service is to build a hierarchy of directory information collection 
  58. agents. In this architecture, a directory query is delivered to a certain agent
  59. in the tree, and then handed up or down, as appropriate, so that the query
  60. is delivered to the agent which holds the information which fills the query.
  61. This approach has been tried before, most notably in some implementations of
  62. the X.500 standard. However, there are number of major flaws with the approach 
  63. as it has been taken. This new Index Service is designed to fix these flaws.
  64.  
  65.  
  66. WNILS Working Group          Whois++ Index Service        Weider, et al.
  67.  
  68.  
  69. 3.1. The search problem
  70.  
  71. One of the primary assumptions made by recent implementations of distributed
  72. directory services is that every entry resides in some location in a hierarch-
  73. ical name space. While this arrangement is ideal for reading the entry once
  74. one knows its location, it is not as good when one is searching for the 
  75. location in the namespace of those entries which meet some set of criteria.  
  76. If the only criteria we know about a desired entry are items which do not 
  77. appear in the namespace, we are forced to do a global query. Whenever we issue
  78. a global query (at the root of the namespace), or a query at the top of a 
  79. given subtree in the namespace, that query is replicated to _all_ subtrees of 
  80. the starting point. The replication of the query to all subtrees is not 
  81. necessarily a problem; queries are cheap. However, every server to which the 
  82. query has been replicated must process that query, even if it has no entries 
  83. which match the specified criteria. This part of the global query processing 
  84. is quite expensive. A poorly designed namespace or a thin namespace can cause 
  85. the vast majority of queries to be replicated globally, but a very broad 
  86. namespace can cause its own navigation problems. Because of these problems,
  87. search has been turned off at high levels of the X.500 namespace.
  88.  
  89. 3.2. The location problem
  90.  
  91. With global search turned off, one must know in advance how the name space is
  92. laid out so that one can guide a query to a proper location. Also, the layout
  93. of the namespace then becomes critical to a user's ability to find the 
  94. desired information. Thus there are endless battles about how to lay out the
  95. name space to best serve a given set of users, and enormous headaches whenever
  96. it becomes apparent that the current namespace is unsuited to the current
  97. usages and must be changed (as recently happened in X.500). Also, assuming
  98. one does impose multiple hierarchies on the entries through use of the 
  99. namespace, the mechanisms to maintain these multiple hierarchies in X.500 do
  100. not exist yet, and it is possible to move entries out from under their 
  101. pointers.  Also, there is as yet no agreement on how the X.500 namespace
  102. should look even for the White Pages types of information that is currently
  103. installed in the X.500 pilot project.
  104.  
  105. 3.3. The Yellow Pages problem
  106.  
  107. Current implementations of this hierarchical architecture have also been
  108. unsuited to solving the Yellow Pages problem; that is, the problem of
  109. easily and flexibly building special-purpose directories (say of molecular
  110. biologists) and of automatically maintaining these directories once they have
  111. been built. In particular, the attributes appropriate to the new directory
  112. must be built into the namespace because that is the only way to segregate
  113. related entries into a place where they can be found without a global 
  114. search. Also, there is a classification problem; how does one adequately
  115. specify the proper categories so that people other than the creator of the
  116. directory can find the correct subtree? Additionally, there is the problem
  117. of actually finding the data to put into the subtree; if one must traverse
  118. the hierarchy to find the data, we have to look globally for the proper 
  119. entries.
  120.  
  121. 3.4. Solutions 
  122.  
  123. The problems examined in this section can be addressed by a combination of two 
  124. new techniques: directory meshes and forward knowledge.
  125.  
  126. WNILS Working Group         Whois++ Index Service               Weider, et al.
  127.  
  128. 4. Directory meshes and forward knowledge
  129.  
  130. We'll hold off for a moment on describing the actual architecture used in
  131. our solution to these problems and concentrate on a high level description of
  132. what solutions are provided by our conceptual approach. To begin with,
  133. although every entry in WHOIS++ does indeed have a unique identifier 
  134. (resides in a specific location in the namespace) the navigational algorithms
  135. to reach a specific entry do not necessarily depend on the identifier the
  136. entry has been assigned. The Index Service gets around the namespace and
  137. hierarchy problems by creating a directory mesh on top of the entries.
  138. Each layer of the mesh has a set of 'forward knowledge' which indicates the
  139. contents of the various servers at the next lower layer of the mesh. Thus 
  140. when a query is received by a server in a given layer of the mesh, it can
  141. prune the search tree and hand the query off to only those lower level servers
  142. which have indicated that they might be able to answer it. Thus search becomes
  143. feasible at all levels of the mesh. In the current version of this 
  144. architecture, we have chosen a certain set of information to hand up the mesh 
  145. as forward knowledge. This may or may not be exactly the set of information 
  146. required to construct a truly searchable directory, but the protocol itself 
  147. doesn't restrict the types of information which can be handed around.
  148.  
  149. In addition, the protocols designed to maintain the forward knowledge will
  150. also work perfectly well to provide replication of servers for redundancy
  151. and robustness. In this case, the forward knowledge handed around by the
  152. protocols is the entire database of entries held by the replicated server.
  153.  
  154. Another benefit provided by the mesh of index servers is that since the
  155. entry identification scheme has been decoupled from the navigation service,
  156. multiple hierarchies can be built and easily maintained on top of the 
  157. existing data. Also, the user does not need to know in advance where in the 
  158. mesh the entry is contained.
  159.  
  160. Also, the Yellow Pages problem now becomes tractable, as the index servers
  161. can pick and choose between information proffered by a given server; 
  162. because we have an architecture that allows for automatic polling of data, 
  163. special purpose directories become easy to construct and to maintain.
  164.  
  165.  
  166. 5. Components of the Index Service:
  167.  
  168. 5.1. WHOIS++ servers
  169.  
  170. The whois++ service is described in [Deutsch, et al, 1992]. As that service 
  171. specifies only the query language, the information model, and the server 
  172. responses, whois++ services can be provided by a wide variety of databases 
  173. and directory services. However, to participate in the Index Service, that 
  174. underlying database must also be able to generate a 'centroid', or some other
  175. type of forward knowledge, for the data it serves.
  176.  
  177. 5.2. Centroids as forward knowledge
  178.  
  179. The centroid of a server is comprised of a list of the templates and 
  180. attributes used by that server, and a word list for each attribute.
  181. The word list for a given attribute contains one occurrence of every 
  182. word which appears at least once in that attribute in some record in that 
  183. server's data, and nothing else.
  184.  
  185.  
  186. WNILS Working Group         Whois++ Index Service               Weider, et al.
  187.  
  188. For example, if a whois++ server contains exactly three records, as follows:
  189.  
  190. Record 1            Record 2
  191. Template: User            Template: User
  192. First Name: John         First Name: Joe
  193. Last Name: Smith        Last Name: Smith
  194. Favourite Drink: Labatt Beer    Favourite Drink: Molson Beer
  195.  
  196. Record 3
  197. Template: Domain
  198. Domain Name: foo.edu
  199. Contact Name: Mike Foobar
  200.  
  201. the centroid for this server would be
  202.  
  203. Template:       User
  204. First Name:       Joe
  205.           John
  206. Last Name:       Smith
  207. Favourite Drink:  Beer
  208.           Labatt
  209.           Molson
  210.  
  211. Template:      Domain
  212. Domain Name:      foo.edu
  213. Contact Name:     Mike
  214.           Foobar
  215.           
  216. It is this information which is handed up the tree to provide forward 
  217. knowledge.  As we mention above, this may not turn out to be the ideal 
  218. solution for forward knowledge, and we suspect that there may be a number of 
  219. different sets of forward knowledge used in the Index Service. However, the 
  220. directory architecture is in a very real sense independent of what types of 
  221. forward knowledge are handed around, and it is entirely possible to build a 
  222. unified directory which uses many types of forward knowledge.
  223.          
  224.  
  225. 5.3. Index servers and Index server Architecture
  226.  
  227. A whois++ index server collects and collates the centroids (or other forward 
  228. knowledge) of either a number of whois++ servers or of a number of other index
  229. servers. An index server must be able to generate a centroid for the
  230. information it contains. In addition, an index server can index any other
  231. server it wishes, which allows one base level server (or index server) to
  232. participate in many hierarchies in the directory mesh.
  233.  
  234. 5.3.1. Queries to index servers
  235.  
  236. An index server will take a query in standard whois++ format, search its
  237. collections of centroids, determine which servers hold records which may fill
  238. that query, and then either a) forward the query to the appropriate servers
  239. on behalf of the user, (chaining in the X.500 terminology) or b) notify the 
  240. user's client of the next servers to contact to submit the query (referral in
  241. the X.500 model).
  242.  
  243. 5.3.2. Index server distribution model and centroid propogation
  244.  
  245. The diagram on the next page illustrates how a mesh of index servers might be
  246. created for a set of whois++ servers. Although it looks like a hierarchy,
  247. the protocols allow (for example) server A to be indexed by both server
  248. D and by server H. 
  249.  
  250.  
  251. WNILS Working Group         Whois++ Index Service               Weider, et al.
  252.  
  253.   whois++        index            index
  254.   servers        servers            servers
  255.             for            for
  256.              whois++            lower-level
  257.                       servers            index servers
  258.   _______
  259.  |       |             
  260.  |   A   |__
  261.  |_______|  \            _______
  262.          \----------|       |
  263.   _______               |   D   |__             ______
  264.  |       |   /----------|_______|  \           |      |
  265.  |   B   |__/                       \----------|      |
  266.  |_______|                                     |  F   |
  267.                     /----------|______|
  268.                    /
  269.   _______                _______  /
  270.  |       |              |       |-
  271.  |   C   |--------------|   E   |
  272.  |_______|              |_______|-
  273.                   \
  274.                    \
  275.   _______                           \            ______
  276.  |       |                 \----------|      |
  277.  |   G   |--------------------------------------|  H   |
  278.  |_______|                                      |______|
  279.  
  280.  
  281.         Figure 1: Sample layout of the Index Service mesh
  282. _______________________________________________________________________________
  283.  
  284.  
  285. In the portion of the index tree shown above, whois++ servers A and B hand 
  286. their centroids up to index server D, whois++ server C hands its centroid up to
  287. index server E, and index servers D and E hand their centroids up to index 
  288. server F. Servers E and G also hand their centroids up to H.
  289.  
  290. The number of levels of index servers, and the number of index servers at each
  291. level, will depend on the number of whois++ servers deployed, and the response
  292. time of individual layers of the server tree. These numbers will have to 
  293. be determined in the field.
  294.  
  295. 5.3.3. Centroid propogation and changes to centroids
  296.  
  297. Centroid propogation is initiated by an authenticated POLL command (sec. 5.2).
  298. The format of the POLL command allows the poller to request the centroid of
  299. any or all templates and attributes held by the polled server. After the
  300. polled server has authenticated the poller, it determines which of the 
  301. requested centroids the poller is allowed to request, and then issues a
  302. CENTROID-CHANGES report (sec. 5.3) to transmit the data. When the poller
  303. receives the CENTROID-CHANGES report, it can authenticate the pollee to
  304. determine whether to add the centroid changes to its data. Additionally, if
  305. a given pollee knows what pollers hold centroids from the pollee, it can
  306. signal to those pollers the fact that its centroid has changed by issuing
  307. a DATA-CHANGED command. The poller can then determine if and when to 
  308. issue a new POLL request to get the updated information. The DATA-CHANGED
  309. command is included in this protocol to allow 'interactive' updating of
  310. critical information.
  311.  
  312.  
  313. WNILS Working Group          Whois++ Index Service              Weider, et al.
  314.  
  315. 5.3.4. Centroid propogation and mesh traversal
  316.  
  317. When an index server issues a POLL request, it may indicate to the polled
  318. server what relationship it has to the polled. This information can be
  319. used to help traverse the directory mesh. Only one field is specified in the
  320. current proposal to transmit the relationship information, although it is
  321. expected that richer relationship information will be shared in future 
  322. revisions of this protocol. The field used for this information is the
  323. X-hierarchy field, and can take on three values. The first is 'topology',
  324. which indicates that the indexing server is at a higher level in the network
  325. topology (e.g. indexes the whole regional ISP). The second is 'geographical',
  326. which indicates that the polling server covers a geographical area subsuming
  327. the pollee. The third is 'administrative', which indicates that
  328. the indexing server covers an administrative domain subsuming the pollee.
  329.  
  330. 5.3.5. Query handling and passing algorithms
  331.  
  332. When an index server receives a query, it searches its collection of centroids,
  333. and determines which servers hold records which may fill that query. As
  334. whois++ becomes widely deployed, it is expected that some index servers
  335. may specialize in indexing certain whois++ templates or perhaps even
  336. certain fields within those templates. If an index server obtains a match
  337. with the query _for those template fields and attributes the server indexes_,
  338. it is to be considered a match for the purpose of forwarding the query.
  339. There are two methods of forwarding a query, called 'chaining' and 'referral'.
  340.  
  341. 5.3.5.1. Query referral
  342.  
  343. Query referral is the process of informing a client which servers to contact
  344. next to resolve a query.  The syntax for notifying a client is outlined in
  345. section 5.5.
  346.  
  347. 5.3.5.2. Query chaining
  348.  
  349. Query chaining is done when the queried index server takes responsibility for
  350. resubmitting the query to the appropriate lower servers. The server 
  351. will then forward the query using the syntax in section 5.4, but then takes
  352. no further responsibility for the query. A whois++ query can specify the
  353. 'trace' option, which causes each server which receives the query to 
  354. send its IANA handle and an identification string to the client.
  355.  
  356. 6. Syntax for operations of the Index Service:
  357.  
  358. 6.1. Data changed syntax
  359.  
  360. The data changed template look like this:
  361.  
  362. DATA-CHANGED:
  363.    Version-number: // version number of index service software, used to insure
  364.            // compatibility
  365.    Time-of-latest-centroid-change: // time stamp of latest centroid change, GMT
  366.    Time-of-message-generation: // time when this message was generated, GMT
  367.    Server-handle: // IANA unique identifier for this server
  368.    Best-time-to-poll: // For heavily used servers, this will identify when
  369.               // the server is likely to be lightly loaded
  370.               // so that response to the poll will be speedy, GMT
  371.    Authentication-type: // Type of authentication used by server, or NONE
  372.    Authentication-data: // data for authentication 
  373. END DATA-CHANGED // This line must be used to terminate the data changed 
  374.          // message
  375.  
  376. WNILS Working Group          Whois++ Index Service              Weider, et al.
  377.  
  378. 6.2. Polling syntax
  379.  
  380. POLL:
  381.    Version-number: // version number of poller's index software, used to
  382.            // insure compatibility
  383.    Type-of-poll: // type of forward data requested. CENTROID is the only
  384.         // one currently defined
  385.    Start-time: // give me all the centroid changes starting at this time, GMT
  386.    End-time: // ending at this time, GMT
  387.    Template: // a standard whois++ template name, or the keyword ALL, for a
  388.          // full update.
  389.    Field:    // used to limit centroid update information to specific fields,
  390.          // is either a specific field name, a list of field names, 
  391.              // or the keyword ALL
  392.    Server-handle: // IANA unique identifier for the polling server. 
  393.           // this handle may optionally be cached by the polled
  394.           // server to announce future changes
  395.    X-Hierarchy: // This field indicates the relationship which the poller
  396.         // bears to the pollee. Typical values might include 
  397.         // 'Topology', 'Geographical", or "Administrative" 
  398.    Authentication-type: // Type of authentication used by poller, or NONE
  399.    Authentication-data: // Data for authentication
  400. END POLL     // This line must by used to terminate the poll message
  401.  
  402. 6.3. Centroid change report
  403.  
  404. As the centroid change report contains nested multiply-occuring blocks,
  405. each multiply occurring block is surrounded *in this paper* by curly
  406. braces '{', '}'. These curly braces are NOT part of the syntax, they are
  407. for identification purposes only. 
  408.  
  409. The syntax of a Data: item is either a list of words, one word per line, with
  410. the syntax:
  411.  
  412.   word <tab> weight
  413.  
  414. or the keyword:
  415.  
  416.   ANY
  417.  
  418. . The weight is not required, but is expected to be used by weighting servers.
  419. The keyword ANY as the only item of a Data: list means that any value for
  420. this field should be treated as a hit by the indexing server.
  421.  
  422. The field Any-field: needs more explanation than can be given in the body
  423. of the syntax description below. It can take two values, True or False. If
  424. the value is True, the pollee is indicating that there are fields in this
  425. template which are not being exported to the polling server, but wishes to 
  426. treat as a hit. Thus, when the polling server gets a query which has a term 
  427. requesting a field not in this list for this template, the polling server 
  428. will treat that term as a 'hit'.  If the value is False, the pollee is 
  429. indicating that there are no other fields for this template which should be 
  430. treated as a hit. This field is required because the basic model for the
  431. WHOIS++ query syntax requires that the results of each search term be 'and'ed
  432. together. This field allows polled servers to export data only for
  433. non-sensitive fields, yet still get referrals of queries which contain 
  434. sensitive terms.
  435.  
  436. CENTROID-CHANGES:
  437.    Version-number: // version number of pollee's index software, used to
  438.            // insure compatibility
  439.    Start-time: // change list starting time, GMT
  440.    End-time: // change list ending time, GMT
  441.    Server-handle: // IANA unique identifier of the responding server
  442.    Case-sensitive: // states whether data is case sensitive or case
  443.            // insensitive. values are TRUE or FALSE
  444.    Authentication-type: // Type of authentication used by pollee, or NONE
  445.    Authentication-data: // Data for authentication
  446.    Compression-type: // Type of compression used on the data, or NONE
  447.    Size-of-compressed-data: // size of compressed data if compression is used
  448.    Operation: // One of 3 keywords: ADD, DELETE, FULL
  449.           // ADD - add these entries to the centroid for this server
  450.               // DELETE - delete these entries from the centroid of this
  451.               // server
  452.           // FULL - the full centroid as of end-time follows
  453. { // The multiply occurring template block starts here
  454.     BEGIN TEMPLATE
  455.     Template: // a standard whois++ template name
  456.     Any-field: // TRUE or FALSE. See beginning of 6.3 for explanation.
  457.   { // the template contains multiple field blocks
  458.     BEGIN FIELD
  459.     Field: // a field name within that template
  460.     Data: // Either the keyword ANY, or
  461.           // the word list itself, one per line, cr/lf terminated
  462.       // each word may be optionally followed by a <tab> and a weight.
  463.     END FIELD
  464.   } // the field ends with END FIELD
  465.     END TEMPLATE
  466. } // the template block ends with END TEMPLATE
  467.     END CENTROID-CHANGES // This line must be used to terminate the centroid
  468.              // change report
  469.  
  470. 6.4. Forwarded query
  471.  
  472. FORWARDED-QUERY:
  473.    Version-number: // version number of forwarder's index software, used to 
  474.            // insure compatibility
  475.    Forwarded-From: // IANA unique identifier of the server forwarding query 
  476.    Forwarded-time: // time this query forwarded, GMT (used for debugging)
  477.    Trace-option: // YES if query has 'trace' option listed, NO if not.
  478.          // used at message reception time to generate trace 
  479.              // information
  480.    Query-origination-address: // address of origin of query
  481.    Body-of-Query: // The original query goes here
  482.    Authentication-type: // Type of authentication used by queryer
  483.    Authentication-data: // Data for authentication
  484.    END FORWARDED-QUERY // This line must be used to terminate the body of the
  485.                 // query
  486.  
  487. 6.5. Query referral
  488.  
  489. SERVERS-TO-ASK:
  490.    Version-number: // version number of index software, used to insure
  491.            // compatibility
  492.    Query-id: // some query identifier so the client knows which query to
  493.              // issue to the following servers
  494.    Body-of-Query: // the original query goes here
  495.    Next-Servers: // A list of servers to ask next, either IP addresses or
  496.          // hostnames, one per line, cr/lf terminated
  497.    END SERVERS-TO-ASK
  498.  
  499. 7. References
  500.  
  501.   Deutsch, et al. Architecture of the WHOIS++ service. August 1992. 
  502.    Available by anonymous FTP as 
  503.     ucdavis.edu://pub/archive/wnils/Architecture.Overview
  504.  
  505.  
  506. WNILS Working Group          Whois++ Index Service              Weider, et al.
  507.  
  508. 8. Author's Addresses
  509.  
  510. Chris Weider
  511. clw@merit.edu
  512. Industrial Technology Institute, Pod G
  513. 2901 Hubbard Rd, 
  514. Ann Arbor, MI 48105
  515. O: (313) 747-2730
  516. F: (313) 747-3185
  517.  
  518. Jim Fullton
  519. fullton@cnidr.org
  520. MCNC Center for Communications
  521. Post Office Box 12889
  522. 3021 Cornwallis Road
  523. Research Triangle Park
  524. North Carolina 27709-2889
  525. O: 919-248-1499
  526. F: 919-248-1405
  527.  
  528. Simon Spero
  529. ses@sunsite.unc.edu
  530. 310 Wilson Library CB #3460
  531. University of North Carolina
  532. Chapel Hill, NC 27599-3460
  533. O: (919) 962-9107
  534. F: (919) 962-5604
  535.    
  536.